|
자바예제모음 |
[1] |
|
등록일:2008-04-15 17:02:01 (0%) 작성자: 제목:Thread 문자열 전송 기반의 채팅 서버/클라이언트 |
|
▩ Thread 문자열 전송 기반의 채팅 서버/클라이언트
1. ChatServer.java
package chatting;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ChatServer {
BufferedWriter writer=null;
Socket socket=null;
ServerSocket server = null;
public void serverStart(){
System.out.println("접속자를 기다리는 중입니다.");
try {
server = new ServerSocket(2006);
socket = server.accept();
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
System.out.println("클라이언트 IP: " + socket.getInetAddress().getHostAddress() + " 이름: " + socket.getInetAddress().getHostName() + " 연결되었습니다.");
//Client와 통신할 스레드 구현 클래스
ChatServerHandler handler = new ChatServerHandler(socket);
handler.start();
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String s="";
while(true) {
try {
System.out.print("☞ ");
s = in.readLine(); //키보드로부터 입력
if(s.equals("999")) break; //종료코드
writer.write(s);
writer.newLine(); //줄바뀜 기호가 있어야 BufferedReader의 readLine()이 인식함
writer.write("---------------------------------------------------------------");
writer.newLine();
writer.flush();
} catch (Exception e) {
System.out.println("Error: " + e.toString());
}
//System.out.println("보낸 글:" + s);//입력받은 내용 출력
}
} catch(IOException ioe) {
System.err.println("Exception generated...");
} finally {
try {
server.close();
} catch(IOException ignored) {}
}
}
public static void main(String[] args) {
ChatServer cs = new ChatServer();
cs.serverStart();
}
}
class ChatServerHandler extends Thread{
protected Socket socket;
String line; //서버로부터 읽어온 문자열 저장
public ChatServerHandler(Socket socket) {
this.socket = socket;
}
public void run() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
line = reader.readLine();
System.out.println("받은글: " + line);
System.out.print("☞ ");
}
} catch(IOException ignored) {
} finally {
try {
socket.close();
} catch(IOException ignored) {}
}
}
}
2. ChatClient.java
package chatting;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class ChatClient {
BufferedWriter writer=null;
Socket socket = null;
String line; //서버로부터 읽어온 문자열 저장
int cnt=0;
public void clientStart(String ip){
System.out.println("클라이언트 프로그램 작동.....");
try {
socket = new Socket(ip, 2006);
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
//Server와 통신할 스레드 구현 클래스
ChatClientHandler handler = new ChatClientHandler(socket);
handler.start();
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String s="";
while(true) {
try {
System.out.print("☞ ");
s = in.readLine(); //키보드로부터 입력
if(s.equals("999")) break; //종료코드
writer.write(s);
writer.newLine(); //줄바뀜 기호가 있어야 BufferedReader의 readLine()이 인식함
writer.write("---------------------------------------------------------------");
writer.newLine();
writer.flush();
} catch (Exception e) {
System.out.println("Error: " + e.toString());
}
//System.out.println("보낸 글:" + s);//입력받은 내용 출력
}
} catch(IOException ioe) {
System.err.println("Exception generated...");
} finally {
try {
socket.close();
} catch(IOException ignored) {}
}
}
public static void main(String[] args) {
ChatClient cc = new ChatClient();
cc.clientStart(args[0]);
}
}
class ChatClientHandler extends Thread{
protected Socket socket;
String line; //서버로부터 읽어온 문자열 저장
public ChatClientHandler(Socket socket) {
this.socket = socket;
}
public void run() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
line = reader.readLine();
System.out.println("받은글: " + line);
System.out.print("☞ ");
}
} catch(IOException ignored) {
} finally {
try {
socket.close();
} catch(IOException ignored) {}
}
}
}
>>>>> 실행:
c:
cd C:\java1000\eclipse\workspace\20060401\classes
start java chatting.ChatServer
start java chatting.ChatClient 172.16.1.1
출처 : http://elog.comrg.net/java/1002 |
[본문링크] Thread 문자열 전송 기반의 채팅 서버/클라이언트
|
[1]
|
|
|
|
|
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=7413 |
|
|
|
|
|
|
|
|
|
Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.
|
|
|